// OpentTxl-C Version 11 TXL parse tree deconstructing functions
// Copyright 2023, James R. Cordy and others

// Used only in the TXL define and rule compilers
#ifndef NOCOMPILE
extern treePT txltree_patternOrReplacement_litsAndVarsAndExpsTP (treePT patternOrReplacementTP);
extern bool txltree_literalP (treePT treeTP);
extern tokenT txltree_literal_tokenT (treePT literalTP);
extern void txltree_listRepeatOrOptTargetName (treePT listRepeatOrOptTP, string targetName);
extern tokenT txltree_descriptionTargetT (treePT descriptionTP);
extern tokenT txltree_construct_varNameT (treePT constructTP);
extern tokenT txltree_construct_targetT (treePT constructTP);
extern treePT txltree_construct_bracketedDescriptionTP (treePT constructTP);
extern treePT txltree_construct_replacementTP (treePT constructTP);
extern bool txltree_construct_isAnonymous (treePT constructTP);
extern treePT txltree_construct_anonymousExpressionTP (treePT constructTP);
extern tokenT txltree_deconstruct_varNameT (treePT deconstructTP);
extern treePT txltree_deconstruct_patternTP (treePT deconstructTP);
extern bool txltree_deconstruct_isStarred (treePT deconstructTP);
extern bool txltree_deconstruct_negated (treePT deconstructTP);
extern bool txltree_deconstruct_isTyped (treePT deconstructTP);
extern tokenT txltree_deconstruct_targetT (treePT deconstructTP);
extern treePT txltree_deconstruct_optSkippingTP (treePT deconstructTP);
extern tokenT txltree_import_export_targetT (treePT exportTP);
extern treePT txltree_import_export_bracketedDescriptionTP (treePT exportTP);
extern treePT txltree_import_patternTP (treePT importTP);
extern tokenT txltree_rule_nameT (treePT ruleTP);
extern treePT txltree_rule_formalsTP (treePT ruleTP);
extern treePT txltree_rule_prePatternTP (treePT ruleTP);
extern treePT txltree_rule_optReplaceOrMatchPartTP (treePT ruleTP);
extern treePT txltree_rule_postPatternTP (treePT ruleTP);
extern treePT txltree_rule_optByPartTP (treePT ruleTP);
extern bool txltree_rule_isStarred (treePT ruleTP);
extern bool txltree_rule_isDollared (treePT ruleTP);
extern tokenT txltree_rule_replaceOrMatchT (treePT ruleTP);
extern treePT txltree_rule_optSkippingTP (treePT ruleTP);
extern treePT txltree_rule_targetBracketedDescriptionTP (treePT ruleTP);
extern tokenT txltree_rule_targetT (treePT ruleTP);
extern treePT txltree_rule_patternTP (treePT ruleTP);
extern treePT txltree_optByPart_replacementTP (treePT optByPartTP);
extern bool txltree_optByPart_isAnonymous (treePT optByPartTP);
extern treePT txltree_optByPart_anonymousExpressionTP (treePT optByPartTP);
extern tokenT txltree_optSkippingNameT (treePT optSkippingTP, int n);
extern tokenT txltree_formal_nameT (treePT argumentTP);
extern treePT txltree_formal_bracketedDescriptionTP (treePT argumentTP);
extern tokenT txltree_formal_typeT (treePT argumentTP);
extern bool txltree_isQuotedLiteral (treePT literalTP);
extern tokenT txltree_literal_tokenT (treePT literalTP);
extern tokenT txltree_literal_rawtokenT (treePT literalTP);
extern enum treeKindT txltree_literal_kindT (treePT literalTP);
extern tokenT txltree_ruleCall_nameT (treePT ruleCallTP);
extern treePT txltree_ruleCall_literalsTP (treePT ruleCallTP);
extern tokenT txltree_bracketedDescription_idT (treePT bracketedDescriptionTP);
extern treePT txltree_bracketedDescription_listRepeatOrOptTargetTP (treePT bracketedDescriptionTP);
extern tokenT txltree_firstTime_nameT (treePT firstTimeTP);
extern tokenT txltree_firstTime_typeT (treePT firstTimeTP);
extern tokenT txltree_expression_baseT (treePT expressionTP);
extern treePT txltree_expression_ruleCallsTP (treePT expressionTP);
extern treePT txltree_program_statementsTP (treePT programTP);
extern treePT txltree_keys_literalsTP (treePT keyListTP);
extern tokenT txltree_define_nameT (treePT defineTP);
extern tokenT txltree_define_defineOrRedefineT (treePT defineTP);
extern tokenT txltree_define_endDefineOrRedefineT (treePT defineTP);
extern treePT txltree_define_optDotDotDotBarTP (treePT defineTP);
extern treePT txltree_define_literalsAndBracketedIdsTP (treePT defineTP);
extern treePT txltree_define_barOrdersTP (treePT defineTP);
extern treePT txltree_define_optBarDotDotDotTP (treePT defineTP);
extern treePT txltree_statement_keyDefRuleTP (treePT statementTP);
extern bool txltree_condition_is_assert (treePT conditionTP);
extern treePT txltree_condition_expressionTP (treePT conditionTP);
extern bool txltree_condition_isAnonymous (treePT conditionTP);
extern bool txltree_condition_negated (treePT conditionTP);
extern bool txltree_condition_anded (treePT conditionTP);
extern bool txltree_bracketedDescriptionP (treePT treeTP);
extern bool txltree_literalP (treePT treeTP);
extern bool txltree_listP (treePT bracketedDescriptionTP);
extern bool txltree_repeatP (treePT bracketedDescriptionTP);
extern bool txltree_list1P (treePT bracketedDescriptionTP);
extern bool txltree_repeat1P (treePT bracketedDescriptionTP);
extern bool txltree_optP (treePT bracketedDescriptionTP);
extern bool txltree_attrP (treePT bracketedDescriptionTP);
extern bool txltree_seeP (treePT bracketedDescriptionTP);
extern bool txltree_notP (treePT bracketedDescriptionTP);
extern bool txltree_fenceP (treePT bracketedDescriptionTP);
extern bool txltree_pushP (treePT bracketedDescriptionTP);
extern bool txltree_popP (treePT bracketedDescriptionTP);
extern treePT txltree_patternOrReplacement_litsAndVarsAndExpsTP (treePT patternOrReplacementTP);
extern bool txltree_literalP (treePT treeTP);
extern tokenT txltree_literal_tokenT (treePT literalTP);
extern void txltree_listRepeatOrOptTargetName (treePT listRepeatOrOptTP, string targetName);
extern tokenT txltree_descriptionTargetT (treePT descriptionTP);
extern tokenT txltree_construct_varNameT (treePT constructTP);
extern tokenT txltree_construct_targetT (treePT constructTP);
extern treePT txltree_construct_bracketedDescriptionTP (treePT constructTP);
extern treePT txltree_construct_replacementTP (treePT constructTP);
extern bool txltree_construct_isAnonymous (treePT constructTP);
extern treePT txltree_construct_anonymousExpressionTP (treePT constructTP);
extern tokenT txltree_deconstruct_varNameT (treePT deconstructTP);
extern treePT txltree_deconstruct_patternTP (treePT deconstructTP);
extern bool txltree_deconstruct_isStarred (treePT deconstructTP);
extern bool txltree_deconstruct_negated (treePT deconstructTP);
extern bool txltree_deconstruct_isTyped (treePT deconstructTP);
extern tokenT txltree_deconstruct_targetT (treePT deconstructTP);
extern treePT txltree_deconstruct_optSkippingTP (treePT deconstructTP);
extern tokenT txltree_import_export_targetT (treePT exportTP);
extern treePT txltree_import_export_bracketedDescriptionTP (treePT exportTP);
extern treePT txltree_import_patternTP (treePT importTP);
extern tokenT txltree_rule_nameT (treePT ruleTP);
extern treePT txltree_rule_formalsTP (treePT ruleTP);
extern treePT txltree_rule_prePatternTP (treePT ruleTP);
extern treePT txltree_rule_optReplaceOrMatchPartTP (treePT ruleTP);
extern treePT txltree_rule_postPatternTP (treePT ruleTP);
extern treePT txltree_rule_optByPartTP (treePT ruleTP);
extern bool txltree_rule_isStarred (treePT ruleTP);
extern bool txltree_rule_isDollared (treePT ruleTP);
extern tokenT txltree_rule_replaceOrMatchT (treePT ruleTP);
extern treePT txltree_rule_optSkippingTP (treePT ruleTP);
extern treePT txltree_rule_targetBracketedDescriptionTP (treePT ruleTP);
extern tokenT txltree_rule_targetT (treePT ruleTP);
extern treePT txltree_rule_patternTP (treePT ruleTP);
extern treePT txltree_optByPart_replacementTP (treePT optByPartTP);
extern bool txltree_optByPart_isAnonymous (treePT optByPartTP);
extern treePT txltree_optByPart_anonymousExpressionTP (treePT optByPartTP);
extern tokenT txltree_optSkipping_nameT (treePT optSkippingTP);
extern tokenT txltree_formal_nameT (treePT argumentTP);
extern treePT txltree_formal_bracketedDescriptionTP (treePT argumentTP);
extern tokenT txltree_formal_typeT (treePT argumentTP);
extern bool txltree_isQuotedLiteral (treePT literalTP);
extern tokenT txltree_literal_tokenT (treePT literalTP);
extern tokenT txltree_literal_rawtokenT (treePT literalTP);
extern enum treeKindT txltree_literal_kindT (treePT literalTP);
extern tokenT txltree_ruleCall_nameT (treePT ruleCallTP);
extern treePT txltree_ruleCall_literalsTP (treePT ruleCallTP);
extern tokenT txltree_bracketedDescription_idT (treePT bracketedDescriptionTP);
extern treePT txltree_bracketedDescription_listRepeatOrOptTargetTP (treePT bracketedDescriptionTP);
extern tokenT txltree_firstTime_nameT (treePT firstTimeTP);
extern tokenT txltree_firstTime_typeT (treePT firstTimeTP);
extern tokenT txltree_expression_baseT (treePT expressionTP);
extern treePT txltree_expression_ruleCallsTP (treePT expressionTP);
extern treePT txltree_program_statementsTP (treePT programTP);
extern treePT txltree_keys_literalsTP (treePT keyListTP);
extern tokenT txltree_define_nameT (treePT defineTP);
extern tokenT txltree_define_defineOrRedefineT (treePT defineTP);
extern tokenT txltree_define_endDefineOrRedefineT (treePT defineTP);
extern treePT txltree_define_optDotDotDotBarTP (treePT defineTP);
extern treePT txltree_define_literalsAndBracketedIdsTP (treePT defineTP);
extern treePT txltree_define_barOrdersTP (treePT defineTP);
extern treePT txltree_define_optBarDotDotDotTP (treePT defineTP);
extern treePT txltree_statement_keyDefRuleTP (treePT statementTP);
extern bool txltree_condition_is_assert (treePT conditionTP);
extern treePT txltree_condition_expressionTP (treePT conditionTP);
extern bool txltree_condition_isAnonymous (treePT conditionTP);
extern bool txltree_condition_negated (treePT conditionTP);
extern bool txltree_condition_anded (treePT conditionTP);
extern bool txltree_bracketedDescriptionP (treePT treeTP);
extern bool txltree_literalP (treePT treeTP);
extern bool txltree_listP (treePT bracketedDescriptionTP);
extern bool txltree_repeatP (treePT bracketedDescriptionTP);
extern bool txltree_list1P (treePT bracketedDescriptionTP);
extern bool txltree_repeat1P (treePT bracketedDescriptionTP);
extern bool txltree_optP (treePT bracketedDescriptionTP);
extern bool txltree_attrP (treePT bracketedDescriptionTP);
extern bool txltree_seeP (treePT bracketedDescriptionTP);
extern bool txltree_notP (treePT bracketedDescriptionTP);
extern bool txltree_fenceP (treePT bracketedDescriptionTP);
#endif
